% Pizzen:
pizza(salame).
pizza(mafia).
pizza(verdure).
pizza(tonno).
pizza(salmone).
pizza(bombay).

% Belaege:
hatBelag(X, mozzarella) :- pizza(X).
hatBelag(X, industriesahne) :- hatBelag(X, lachs).
hatBelag(X, tomate) :- pizza(X), not(hatBelag(X, lachs)).


hatBelag(salame, cervelatwurst).
hatBelag(salame, paprika).
hatBelag(salame, zwiebeln).


hatBelag(mafia, sucuk).
hatBelag(mafia, schinken).
hatBelag(mafia, champignons).

hatBelag(tonno, thunfisch).
hatBelag(tonno, zwiebeln).

hatBelag(salmone, lachs).
hatBelag(salmone, zwiebeln).

hatBelag(bombay, huenchencurrymischung).
hatBelag(bombay, champignons).

hatBelag(verdure, champignons).
hatBelag(verdure, X) :- gemuese(X).

hatZutat(X,Y) :- hatBelag(X, Y). 

% Lebensmittel:
gemuese(tomate).
gemuese(paprika).
gemuese(zwiebeln).
gemuese(mais).

fisch(lachs).
fisch(thunfisch).

salami(cervelatwurst).
salami(sucuk).

fleisch(schinken).
fleisch(huehnerbrust).
fleisch(salami).
fleisch(X) :-(salami(X)).

pilze(champignons).
pilze(kraeuterseitlinge).

milchprodukt(mozzarella).
milchprodukt(industriesahne).

farbstoff(sudanrot).
geschmacksverstaerker(glutamat).
geschmacksverstaerker(hefeextrakt).

zusatzstoff(farbstoff).
zusatzstoff(geschmacksverstaerker).

zusatzstoff(X) :- geschmacksverstaerker(X); farbstoff(X).
zutat(huenchencurrymischung).
zutat(X) :- zusatzstoff(X); gemuese(X); pilze(X); milchprodukt(X); totesTier(X).  

% Bekannte Zutaten der Belaege:
hatZutat(cervelatwurst, sudanrot).
hatZutat(schinken, glutamat).
hatZutat(sucuk, hefeextrakt).

hatZutat(industriesahne, glutamat).
hatZutat(huenchencurrymischung, huehnerbrust).
hatZutat(huenchencurrymischung, industriesahne).

totesTier(fisch).
totesTier(fleisch).
totesTier(X) :- fisch(X) ; fleisch(X).

% Pizzabelag:
pizzabelag(X) :- 
			pizza(P), 
			hatBelag(P, X).
zutat(X) :- 
		 not(zusatzstoff(X); gemuese(X); pilze(X); milchprodukt(X); totesTier(X)), pizzabelag(X).

% enthaelt:
enthaelt(X, Y) :- 
				not(zutat(Y)) , !, fail;
				hatZutat(X,Y);
				hatZutat(X, Z), enthaelt(Z, Y).

% ist es Vegetarisch:

istVeggi(X) :- 
			not(pizza(X)), ! , fail;
			totesTier(Temp),
			enthaelt(X, Temp), !, fail;
			true.
			
			
				
				
			